//
//  main.m
//  NSMutableString
//
//  Created by admin on 2019/8/7.
//  Copyright © 2019 猫爷爷的酱醋茶. All rights reserved.
//

/*
 
 NSString - 恒定性 ：平时使用，效率更高。
    - 每次修改字符串的时候，是重新创建一个对象，再把这个地址赋值给对象指针，这样不仅耗时，也消耗内存。
    例：theChangeValueOfString();
 
 
 NSMutableString ：只有在大批量字符拼接的时候才使用。
    - 可变性，也一定程度上创建字符串对象的速度更快 例：theChangeValueOfString();
    - 是Foundation框架的一个类，继承自NSString，在父类的基础上做了扩展
    - 存储在NSMutableString对象中的字符串数据可以更改
 
 NSMutableString的用法
    - 既然是一个类，要使用的话，就得创建一个对象
        NSMutableString *str = [NSMutableString sting];
 
     注意：创建NSMutableString对象的时候，这么初始化是会出错的
        NSMutableString *str0 = @"jack";
        因为@”jack“是一个父类对象，而str0指针是一个NSMutableString类型的，是一个子类类型
        如果通过子类指针去调用父类独有的成员，就会运行出错。
 
    - 往可变的字符串对象中追加字符串
 
 
 
 */

#import <Foundation/Foundation.h>

//修改NSMutableString的值
void changeTheMutableString(void);

//NSString的修改字符串的耗时
void theChangeValueOfString(void);

//NSMutableString 修改字符串的耗时
void theChangeValueOfMutableString(void);


int main(int argc, const char * argv[])
{
   
    theChangeValueOfMutableString();
    
    return 0;
}

//NSMutableString 修改字符串的耗时
void theChangeValueOfMutableString(void)
{
    NSLog(@"~~~~~~~~~~~");
    NSMutableString *strTwo = [NSMutableString string];
    for (int i = 0; i < 50000; i++)
    {
        [strTwo appendFormat:@"%d",i];
    }
    NSLog(@"~~~~~~~~~~~");//耗时几毫秒
}


//NSString的修改字符串的耗时
void theChangeValueOfString(void)
{
    
    NSLog(@"~~~~~~~~~~~");
    NSString *strOne = @"";
    for (int i = 0; i < 50000; i++)
    {
        strOne = [NSString stringWithFormat:@"%@,%d",strOne,i];
    }
    NSLog(@"~~~~~~~~~~~");//耗时13秒
    
}


//修改NSMutableString的值
void changeTheMutableString(void)
{
    NSMutableString *str = [NSMutableString string];
    [str appendString:@"猫爷爷的酱醋茶"];
    int age = 22;
    [str appendFormat:@",今年%d岁了。",age];
    NSLog(@"str的内容为%@ 地址为%p",str,&str);
    
    str = [str stringByReplacingOccurrencesOfString:@"酱醋茶" withString:@"诗酒茶"];
    NSLog(@"str的内容为%@ 地址为%p",str,&str);//地址不变
}
